#include <iostream>
#include <cstring>
#include <fstream>

using namespace std;


void func1()
{
	cout << "11111" << '\n';
	cerr << "11111" << '\n';
	clog << "11111" << '\n';


	string str;

	/*
	while (cin >> str)
	{
		cout << str << endl;
	}
	原型如下  重载了 >> 和 bool  就会返回 true 或 false   通过检查failbit这个标志
	*/
	while (operator>>(cin, str).operator bool())
	{
		cout << cin.good() << endl;     // 1
		cout << cin.eof() << endl;      // 0  
		cout << cin.bad() << endl;      // 0
		cout << cin.fail() << endl;     // 0  

		cout << str << endl;
	}


	cout << cin.good() << endl;     // 0
	cout << cin.eof() << endl;      // 1
	cout << cin.bad() << endl;      // 0
	cout << cin.fail() << endl;     // 1

	cin.clear();     // 将标志设置为good

	// 就又可以继续while(cin >> str)了
	while (cin >> str)
	{
		cout << str << '\n';
	}

	cin.clear();     // 将标志设置为good


	int i;
	cin >> i;
	cout << i << '\n';


	cout << cin.good() << endl;     // 1
	cout << cin.eof() << endl;      // 0  
	cout << cin.bad() << endl;      // 0
	cout << cin.fail() << endl;     // 0  

	cin >> i;
	cout << i << '\n';

	// 读到s非法 标志已经变了 就不再输入了 i默认回复为0了
	cout << cin.good() << endl;     // 0
	cout << cin.eof() << endl;      // 0  
	cout << cin.bad() << endl;      // 0
	cout << cin.fail() << endl;     // 1  


	// 加上这个就行了 不断将非法的从缓冲区读走才行
	if (cin.fail())
	{
		cin.clear();
		cin.get();
		char ch;
		while (cin.get())
		{

		}
	}
}

int main()
{
	
	// func1();


	ofstream ofs;

	ofs.open("text.txt");
	ofs.put('x');
	ofs.write("hello\n", 6);

	// 最好用的
	ofs << "222222222" << endl;
	ofs.close();


	ifstream ifs("io.cpp");

	while (!ifs.eof())
	{
		char ch = ifs.get();
		cout << ch;
	}

	return 0;
}